package com.br.android.widing;

import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import android.content.Intent;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;

import com.actionbarsherlock.app.SherlockActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
import com.br.android.widing.db.WidingCategoriaCursor;
import com.br.android.widing.db.WidingCategoriaDAO;
import com.br.android.widing.db.WidingGanhosDAO;
import com.br.android.widing.entity.Ganho;

public class EditarGanhoActivity extends SherlockActivity {

	private EditText editTextNomeGanho;
	private EditText editTextValorGanho;
	private Spinner spinnerCategoriaGanho;

	private DecimalFormat formatAux = new DecimalFormat("###,###,##0.00");
	private SimpleDateFormat formatData = new SimpleDateFormat(
			"dd/MM/yyyy HH:mm");

	private Ganho ganho;
	private WidingGanhosDAO dao;

	private WidingCategoriaDAO categoriaDAO;
	private WidingCategoriaCursor categoriaCursor;

	// adapter para o spinner
	private ArrayAdapter<String> adapter;
	private List<String> listCategorias;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.layout_insert_ganho);

		dao = new WidingGanhosDAO(this);
		categoriaDAO = new WidingCategoriaDAO(this);

		editTextNomeGanho = (EditText) findViewById(R.id.editTextNomeGanho);
		editTextValorGanho = (EditText) findViewById(R.id.editTextValorGanho);
		spinnerCategoriaGanho = (Spinner) findViewById(R.id.spinnerCategoriaGanho);

		if (categoriaDAO.consultarCategorias().getCount() > 0) {
			spinnerCategoriaGanho.setPrompt("Selecione uma categoria");
		} else {
			spinnerCategoriaGanho
					.setPrompt("N\u00e3o existem categorias cadastradas");
		}

		// adicionando os itens no spinner
		listCategorias = new ArrayList<String>();
		categoriaCursor = categoriaDAO.consultarCategorias();
		for (int i = 0; i < categoriaCursor.getCount(); i++) {
			categoriaCursor.moveToPosition(i);
			listCategorias.add(categoriaCursor.getNomeCategoria());
		}
		adapter = new ArrayAdapter<String>(this,
				android.R.layout.simple_spinner_item, listCategorias);
		adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		spinnerCategoriaGanho.setAdapter(adapter);
		categoriaDAO.close();
		categoriaCursor.close();

		Intent it = getIntent();
		Ganho g = (Ganho) it.getExtras().get("ganho");
		ganho = g;
		editTextNomeGanho.setText(g.getNomeGanho());
		editTextValorGanho.setText(String.valueOf(g.getValorGanho()));
		for (int i = 0; i < spinnerCategoriaGanho.getCount(); i++) {
			if (spinnerCategoriaGanho.getItemAtPosition(i).equals(
					g.getCategoriaGanho())) {
				spinnerCategoriaGanho.setSelection(i);
			}
		}
		getSupportActionBar().setDisplayHomeAsUpEnabled(true);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		MenuInflater inflater = getSupportMenuInflater();
		inflater.inflate(R.menu.menu_cadastro_ganho, menu);
		return super.onCreateOptionsMenu(menu);
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case R.id.menu_cadastro_ganho:
			if (!editTextNomeGanho.toString().equals("")) {
				ganho.setNomeGanho(editTextNomeGanho.getText().toString());
			} else {
				ganho.setNomeGanho("Ganho sem t\u00edtulo");
			}
			if (!editTextValorGanho.toString().equals("")) {
				ganho.setValorGanho(Double.parseDouble(editTextValorGanho
						.getText().toString()));
			} else {
				mensagem("Insira um valor.");
			}
			if (spinnerCategoriaGanho.getSelectedItemPosition() < 0) {
				Toast.makeText(this, "Selecione uma categoria.",
						Toast.LENGTH_SHORT).show();
				break;
			}
			ganho.setCategoriaGanho(spinnerCategoriaGanho.getSelectedItem()
					.toString());
			ganho.setDataGanho(formatData.format(new Date()));
			dao.alterarGanho(ganho);
			startActivity(new Intent(this, PrincipalActivity.class));
			overridePendingTransition(android.R.anim.fade_in,
					android.R.anim.fade_out);
			finish();
			break;
		case android.R.id.home:
			startActivity(new Intent(this, PrincipalActivity.class));
			overridePendingTransition(android.R.anim.fade_in,
					android.R.anim.fade_out);
			finish();
			break;
		}
		return super.onOptionsItemSelected(item);
	}

	private void mensagem(String msg) {
		Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
	}

	@Override
	public void onBackPressed() {
		startActivity(new Intent(this, PrincipalActivity.class));
		overridePendingTransition(android.R.anim.fade_in,
				android.R.anim.fade_out);
		finish();
	}

}
